/**
 * API 使用示例
 * 展示如何在页面中调用接口
 */

import { request, API } from './index.js';

// 获取商品分类树
export async function getCategoryTree() {
  try {
    const res = await request.get(API.PRODUCT_MANAGE.CATEGORY_TREE);
    return res; // 直接返回处理后的数据（数组格式）
  } catch (error) {
    console.error('获取商品分类树失败:', error);
    throw error;
  }
}

// 获取广告列表
export async function getAdvertList() {
  try {
    const res = await request.get(API.ADVERT.LIST);
    return res;
  } catch (error) {
    console.error('获取广告列表失败:', error);
    throw error;
  }
}

// 获取商品列表
export async function getProductList() {
  return await request.get(API.PRODUCT.LIST);
}

// 获取个人寄售列表
export async function getConsignmentList() {
  return await request.get(API.CONSIGNMENT.LIST);
}

// 获取个人寄售详情
export async function getConsignmentDetail(id) {
  if (!id) throw new Error('缺少寄售详情 id');
  const url = API.CONSIGNMENT.DETAIL.replace('{id}', id);
  try {
    const res = await request.get(url);
    return res;
  } catch (error) {
    console.error('获取个人寄售详情失败:', error);
    throw error;
  }
}

// 通过授权 code 获取手机号
export async function getPhoneNumberByCode(code) {
  if (!code) throw new Error('缺少授权 code');
  try {
    const res = await request.post(API.USER.GET_PHONE_NUMBER, { code });
    // 兼容不同返回结构，尽量提取手机号
    const phoneNumber = res?.data?.phoneNumber
      ?? res?.phoneNumber
      ?? res?.data?.phone
      ?? res?.phone
      ?? res?.phone_info?.phoneNumber
      ?? res?.data?.phone_info?.phoneNumber;
    if (!phoneNumber) {
      // 返回原始数据，交由调用方自行处理完整数据
      return res;
    }
    return { phoneNumber };
  } catch (error) {
    // 统一封装未识别为成功时可能直接抛出微信原始数据
    if (error && (error.errcode === 0 || error.code === 0 || error.code === 200)) {
      const phoneNumber = error?.phone_info?.phoneNumber
        ?? error?.data?.phone_info?.phoneNumber
        ?? error?.data?.phoneNumber
        ?? error?.phoneNumber
        ?? error?.data?.phone
        ?? error?.phone;
      if (phoneNumber) {
        return { phoneNumber };
      }
      return error;
    }
    console.error('获取手机号失败:', error);
    throw error;
  }
}

// 新增用户
export async function addUser({ address = '', gender = 0, nickname = '', tel = '', visitCount = 0 }) {
  try {
    const payload = { address, gender, nickname, tel, visitCount };
    const res = await request.post(API.USER.ADD, payload);
    return res;
  } catch (error) {
    console.error('新增用户失败:', error);
    throw error;
  }
}

// 在 Vue 页面中使用示例
/*
// 在页面的 script 中引入
import { getProductList, userLogin } from '@/api/example.js';

export default {
  data() {
    return {
      productList: [],
      loading: false
    };
  },
  
  methods: {
    // 获取商品列表
    async loadProductList() {
      this.loading = true;
      try {
        const params = {
          page: 1,
          pageSize: 10,
          category: 'all'
        };
        const data = await getProductList(params);
        this.productList = data.list;
      } catch (error) {
        console.error('加载商品列表失败', error);
      } finally {
        this.loading = false;
      }
    },
    
    // 用户登录
    async handleLogin() {
      const loginData = {
        phone: '13800138000',
        password: '123456'
      };
      
      try {
        const result = await userLogin(loginData);
        uni.showToast({
          title: '登录成功',
          icon: 'success'
        });
        // 处理登录成功后的逻辑
      } catch (error) {
        console.error('登录失败', error);
      }
    }
  },
  
  onLoad() {
    // 页面加载时调用
    this.loadProductList();
  }
};
*/